﻿using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace linkPosWeb.Class
{
    public class raporlar
    {
        context con = new context();
        linksDataContext ln = new linksDataContext();
        private string subekodu;
        private int token;
        // anlık kasa bilgisinin kaydı için kullanılan prametreler
        private int parcasaiyis;
        private int firmaID;
        private int msayisi;
        private double hasilat;
        private double gunluknakit;
        private double gunlukvisa;
        private double gunlukcari;
        private double eskivisa;
        private double eskinakit;
        private double toplamcari;
        private double masraflar;
        private double slip;
        private double nakit;
        private string zaman;

        // masraf bilgileri ile ilgili kodlar 


        private double masraftutari;
        private string masraftipi;
        private string masrafaciklama;
        

        public int psayi { get { return parcasaiyis; } set { parcasaiyis = value; } }
        public int FirmaID { get { return firmaID; } set { firmaID = value; } }
        public int Msayisi { get { return msayisi; } set { msayisi = value; } }
        public double Hasilat { get { return hasilat; } set { hasilat = value; } }
        public double Gunluknakit { get { return gunluknakit; } set { gunluknakit = value; } }
        public double Gunlukvisa { get { return gunlukvisa; } set { gunlukvisa = value; } }
        public double Gunlukcari { get { return gunlukcari; } set { gunlukcari = value; } }
        public double Eskivisa { get { return eskivisa; } set { eskivisa = value; } }
        public double Eskinakit { get { return eskinakit; } set { eskinakit = value; } }
        public double Toplamcari { get { return toplamcari; } set { toplamcari = value; } }
        public double Masraflar { get { return masraflar; } set { masraflar = value; } }
        public double Slip { get { return slip; } set { slip = value; } }
        public double Nakit { get { return nakit; } set { nakit = value; } }
        public string Zaman { get { return zaman; } set { zaman = value; } }

        // masraf geter setter lar

        public double Masraftutar { get { return masraftutari; } set { masraftutari = value; } }
        public string Masraftipi { get { return masraftipi; } set { masraftipi = value; } }
        public string Masrafaciklama { get { return masrafaciklama; } set { masrafaciklama = value; } }

        // 

        public raporlar()
        { }

        // herhangi bir tarihe ait kasqa bilgsini veren metod
        public void kasabilgisi(string tarih)
        {

            
            object[] kolonlar = { "subekodu", "firmaID", "toplamparca", "toplammusteri", "hasilat", "gunluknakit", "gunlukvisa", "gunlukcari", "eskinakit", "toplamcari", "nakit", "slip", "masraf", "tarih", "time" };

            string sorgu = "select * from kasaraprolari where subekodu=@subekodu and tarih=@tarih";

            MySqlConnection con = connection.baglanti2;
            MySqlCommand cmd = new MySqlCommand(sorgu, con);
            cmd.Parameters.AddWithValue("@subekodu", subekodu);
            cmd.Parameters.AddWithValue("@tarih", tarih);

            con.Open();
            MySqlDataReader sdr = cmd.ExecuteReader();
            while (sdr.Read())
            {
                  subekodu=sdr[kolonlar[0].ToString()].ToString();
                  firmaID = Convert.ToInt32(sdr[kolonlar[1].ToString()]);
                  parcasaiyis = Convert.ToInt32(sdr[kolonlar[2].ToString()]);
                  msayisi=Convert.ToInt32(sdr[kolonlar[3].ToString()]);
                  hasilat=Convert.ToDouble(sdr[kolonlar[4].ToString()]);
                  gunluknakit=Convert.ToDouble(sdr[kolonlar[5].ToString()]);
                  gunlukvisa =Convert.ToDouble(sdr[kolonlar[6].ToString()]);
                  gunlukcari = Convert.ToDouble(sdr[kolonlar[7].ToString()]);
                  eskinakit = Convert.ToDouble(sdr[kolonlar[8].ToString()]);
                  toplamcari = Convert.ToDouble(sdr[kolonlar[9].ToString()]);
                  nakit =Convert.ToDouble(sdr[kolonlar[10].ToString()]);
                  slip = Convert.ToDouble(sdr[kolonlar[11].ToString()]);
                  masraflar = Convert.ToDouble(sdr[kolonlar[12].ToString()]);
                  zaman = sdr[kolonlar[13].ToString()].ToString();        

            }
            con.Close();

                

        }

        // sube kodu verilen subenin kasa değerlerini getirelim
        public void anlik_kasa_bilgisi_getir()
        {

            object[] kolonlar = { "subekodu", "firmaID", "toplamparca", "toplammusteri", "hasilat", "gunluknakit", "gunlukvisa", "gunlukcari", "eskinakit", "toplamcari", "nakit", "slip", "masraf", "tarih", "time" };

            string sorgu = "select * from kasaraporlari where firmaID=@firmaID and tarih=@tarih and subekodu=@subekodu order by time desc Limit 1";

            MySqlConnection con = connection.baglanti2;
            MySqlCommand cmd = new MySqlCommand(sorgu,con);
            cmd.Parameters.AddWithValue("@firmaID",firmaID);
            cmd.Parameters.AddWithValue("@subekodu", subekodu);
            cmd.Parameters.AddWithValue("@tarih",context.sadecetarih());

            con.Open();
            MySqlDataReader sdr = cmd.ExecuteReader();
          
            while (sdr.Read())
            {
                  subekodu=sdr[kolonlar[0].ToString()].ToString();
                  firmaID = Convert.ToInt32(sdr[kolonlar[1].ToString()]);
                  parcasaiyis = Convert.ToInt32(sdr[kolonlar[2].ToString()]);
                  msayisi=Convert.ToInt32(sdr[kolonlar[3].ToString()]);
                  hasilat=Convert.ToDouble(sdr[kolonlar[4].ToString()]);
                  gunluknakit=Convert.ToDouble(sdr[kolonlar[5].ToString()]);
                  gunlukvisa =Convert.ToDouble(sdr[kolonlar[6].ToString()]);
                  gunlukcari = Convert.ToDouble(sdr[kolonlar[7].ToString()]);
                  eskinakit = Convert.ToDouble(sdr[kolonlar[8].ToString()]);
                  toplamcari = Convert.ToDouble(sdr[kolonlar[9].ToString()]);
                  nakit =Convert.ToDouble(sdr[kolonlar[10].ToString()]);
                  slip = Convert.ToDouble(sdr[kolonlar[11].ToString()]);
                  masraflar = Convert.ToDouble(sdr[kolonlar[12].ToString()]);
                  zaman = sdr[kolonlar[13].ToString()].ToString();                 
            }
            con.Close();

        
        }

        // tüm kasa raporlarını getir  burdada subeleri guruplamak gerekiyor standart sorgular ile

        public List<kasaraporlari> anlik_kasa_bilgisi_getir2()
        {
            List<kasaraporlari> anlik = (from a in ln.kasaraporlaris
                                         where a.subekodu == subekodu
                                         select a).ToList();
            return anlik;

        }


        public void anlikkasabilgisikaydet()
        {
            object[] kolonlar = { "subekodu", "firmaID", "toplamparca", "toplammusteri", "hasilat", "gunluknakit", "gunlukvisa", "gunlukcari", "eskinakit", "toplamcari", "nakit", "slip", "masraf", "tarih", "time" };

            object[] degerler = { subekodu, firmaID, parcasaiyis, msayisi, hasilat, gunluknakit, gunlukvisa, gunlukcari, eskinakit, toplamcari, nakit, slip, masraflar, context.sadecetarih(), context.sadecesaat() };

            context.myekle("kasaraporlari", kolonlar, degerler);




        }

        // subekoduna göre mastraf ekleyecek olan metod
        public void masrafkaydet()
        {

            object[] kolonlar = {"subekodu","firmaID","tutar","tipi","aciklama","tarih","zaman" };
            object[] degerler = { subekodu,firmaID,masraftutari,masraftipi,masrafaciklama,context.sadecetarih(),context.sadecesaat()};

            context.myekle("masraflar", kolonlar, degerler);
        
        }



        //  burada firmanın genel ve şubelerine ait tüm raporlarının döktüreceğimiz alan

        //  anlık kasa durumu();

        //  günlük kasa raporları

        //  dönemlik kasa raporları       

        //  masrafların genel dökümü();

        //  iptal edilen siparişler;

        //  iskonto yapılan siparişler;

        //  carilar;

        //  musteriler;

        //  raftakiler;

        




    }
}